

Когда работающий по TCP клиент хочет соединиться с объектом, доступным только через файрволл, он должен открыть TCP-соединение c соответствующим SOCKS-портом SOCKS-сервера. Сервис SOCKS обычно находится на TCP-порту 1080. Если соединение прошло успешно, клиент начинает переговоры о методе аутентификации, который будет использоваться, проходит аутентификацию по выбранному методу и посылает свой запрос. SOCKS-сервер обрабатывает запрос и либо пытается установить соответствующее соединение, либо отказывает в нем.
Клиент соединяется с сервером и посылает сообщение с номером версии и выбором соответствующего метода аутентификации:
Значение поля VER равно X'05' для данной версии протокола. Поле NMETHODS содержит число октетов в идентификаторах методов авторизации в поле METHODS.
Сервер выбирает один из предложенных методов, перечисленных в METHODS, и посылает ответ о выбранном методе:
Если выбранный метод в METHOD равен X'FF', то ни один из предложенных клиентом методов не применим и клиент должен закрыть соединение.
Эти значения определены для поля METHOD:
o X'00' аутентификация не требуется
o X'01' GSSAPI
o X'02' USERNAME/PASSWORD (см. RFC1929)
o X'03' до X'7F' зарезервировано IANA
o X'80' до X'FE' предназначено для частных методов
o X'FF' нет применимых методов
Затем клиент и сервер начинают аутентификацию согласно выбранному методу. Описание методов аутентификации находится в отдельных документах.
Разработчики новых методов аутентификации применимых для этого протокола должны обращаться в IANA для получения номера метода. Документ с выделенными номерами должен дополнить текущий список номеров и соответствующих им методов аутентификации.
Совместимые реализации должны поддерживать GSSAPI и могут поддерживать аутентификацию USERNAME/PASSWORD.

